From: Carlos Garnacho Date: Tue, 22 Jul 2014 10:28:00 +0000 (+0200) Subject: panelMenu: Interact to touch events X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2312 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e545ec59b9eda989b98a41ee685d3a41fa099ee1;p=gnome-shell.git panelMenu: Interact to touch events No sequence checks are done, these UI elements promptly trigger a grab that will cancel ongoing touches and redirect later ones somewhere else, so that works as a barrier to multi-toggling. https://bugzilla.gnome.org/show_bug.cgi?id=733633 --- diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 07494d181..863e0d7ed 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -100,7 +100,7 @@ const Button = new Lang.Class({ accessible_name: nameText ? nameText : "", accessible_role: Atk.Role.MENU }); - this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); + this.actor.connect('event', Lang.bind(this, this._onEvent)); this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress)); this.actor.connect('notify::visible', Lang.bind(this, this._onVisibilityChanged)); @@ -131,11 +131,12 @@ const Button = new Lang.Class({ } }, - _onButtonPress: function(actor, event) { - if (!this.menu) - return Clutter.EVENT_PROPAGATE; + _onEvent: function(actor, event) { + if (this.menu && + (event.type() == Clutter.EventType.TOUCH_BEGIN || + event.type() == Clutter.EventType.BUTTON_PRESS)) + this.menu.toggle(); - this.menu.toggle(); return Clutter.EVENT_PROPAGATE; },